//package com.sydata.cloud.ui.tool.image.select.engine;
//
//import android.content.Context;
//import android.graphics.Bitmap;
//import android.graphics.drawable.Drawable;
//import android.net.Uri;
//import android.widget.ImageView;
//
//import androidx.annotation.NonNull;
//import androidx.annotation.Nullable;
//import androidx.fragment.app.Fragment;
//
//import com.bumptech.glide.Glide;
//import com.bumptech.glide.request.target.CustomTarget;
//import com.bumptech.glide.request.transition.Transition;
//import com.luck.picture.lib.engine.CropFileEngine;
//import com.yalantis.ucrop.UCrop;
//import com.yalantis.ucrop.UCropImageEngine;
//
//import java.util.ArrayList;
//
//public class ImageFileCropEngine implements CropFileEngine {
//    @Override
//    public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
//        UCrop.Options options = buildOptions();
//        UCrop uCrop = UCrop.of(srcUri, destinationUri, dataSource);
//        uCrop.withOptions(options);
//        uCrop.setImageEngine(new UCropImageEngine() {
//            @Override
//            public void loadImage(Context context, String url, ImageView imageView) {
//                if (!ImageLoaderUtils.assertValidRequest(context)) {
//                    return;
//                }
//                Glide.with(context).load(url).override(180, 180).into(imageView);
//            }
//
//            @Override
//            public void loadImage(Context context, Uri url, int maxWidth, int maxHeight, OnCallbackListener<Bitmap> call) {
//                Glide.with(context).asBitmap().load(url).override(maxWidth, maxHeight).into(new CustomTarget<Bitmap>() {
//                    @Override
//                    public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
//                        if (call != null) {
//                            call.onCall(resource);
//                        }
//                    }
//
//                    @Override
//                    public void onLoadCleared(@Nullable Drawable placeholder) {
//                        if (call != null) {
//                            call.onCall(null);
//                        }
//                    }
//                });
//            }
//        });
//        uCrop.start(fragment.requireActivity(), fragment, requestCode);
//    }
//
//    /**
//     * 多图裁剪时每张对应的裁剪比例
//     *
//     * @param dataSourceCount
//     * @return
//     */
//    private AspectRatio[] buildAspectRatios(int dataSourceCount) {
//        AspectRatio[] aspectRatios = new AspectRatio[dataSourceCount];
//        for (int i = 0; i < dataSourceCount; i++) {
//            if (i == 0) {
//                aspectRatios[i] = new AspectRatio("16:9", 16, 9);
//            } else if (i == 1) {
//                aspectRatios[i] = new AspectRatio("3:2", 3, 2);
//            } else {
//                aspectRatios[i] = new AspectRatio("原始比例", 0, 0);
//            }
//        }
//        return aspectRatios;
//    }
//
//    /**
//     * 配制UCrop，可根据需求自我扩展
//     *
//     * @return
//     */
//    private UCrop.Options buildOptions() {
//        UCrop.Options options = new UCrop.Options();
//        options.setHideBottomControls(!cb_hide.isChecked());
//        options.setFreeStyleCropEnabled(cb_styleCrop.isChecked());
//        options.setShowCropFrame(cb_showCropFrame.isChecked());
//        options.setShowCropGrid(cb_showCropGrid.isChecked());
//        options.setCircleDimmedLayer(cb_crop_circular.isChecked());
//        options.withAspectRatio(aspect_ratio_x, aspect_ratio_y);
//        options.setCropOutputPathDir(getSandboxPath());
//        options.isCropDragSmoothToCenter(false);
//        options.setSkipCropMimeType(getNotSupportCrop());
//        options.isForbidCropGifWebp(cb_not_gif.isChecked());
//        options.isForbidSkipMultipleCrop(false);
//        options.setMaxScaleMultiplier(100);
//        if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) {
//            SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle();
//            boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack();
//            int statusBarColor = mainStyle.getStatusBarColor();
//            options.isDarkStatusBarBlack(isDarkStatusBarBlack);
//            if (StyleUtils.checkStyleValidity(statusBarColor)) {
//                options.setStatusBarColor(statusBarColor);
//                options.setToolbarColor(statusBarColor);
//            } else {
//                options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
//                options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
//            }
//            TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle();
//            if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) {
//                options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor());
//            } else {
//                options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white));
//            }
//        } else {
//            options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
//            options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
//            options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white));
//        }
//        return options;
//    }
//}